Introdução ao PyTorch: Por que os Tensores Importam
O PyTorch é um framework aberto e dinâmico altamente flexível, amplamente utilizado em pesquisas de aprendizado profundo e prototipagem rápida. Em seu cerne, o Tensor é a estrutura de dados indispensável. É uma matriz multidimensional projetada para lidar eficientemente com operações numéricas necessárias para modelos de aprendizado profundo, suportando aceleração por aceleração por GPU automaticamente.
1. Compreendendo a Estrutura de Tensore
Toda entrada, saída e parâmetro do modelo no PyTorch é encapsulado em um Tensor. Eles têm o mesmo propósito que os arrays do NumPy, mas são otimizados para processamento em hardware especializado como GPUs, tornando-os muito mais eficientes para as operações de álgebra linear em larga escala exigidas por redes neurais.
Propriedades-chave definem o tensor:
- Forma: Define as dimensões dos dados, expressas como uma tupla (por exemplo, $4 \times 32 \times 32$ para um lote de imagens).
- Tipo: Especifica o tipo numérico dos elementos armazenados (por exemplo,
torch.float32para pesos do modelo,torch.int64para indexação). - Dispositivo: Indica a localização física do hardware: tipicamente
'cpu'ou'cuda'(GPU da NVIDIA).
requires_grad=True esteja definida, permitindo o cálculo fácil de gradientes durante a retropropagação.
Run code to inspect active tensors
The inner dimensions must match, so $F$ must be $(1, 10)$. Then $(1, 10) @ (10, 5) \rightarrow (1, 5)$.
Code:
F_new = F.unsqueeze(0) or F_new = F.view(1, -1)The operation is straightforward MatMul.
Code:
output = F_new @ W or output = torch.matmul(F_new, W)Use the
view or reshape methods. The fastest way to flatten is often using -1 for one dimension.Code:
F_flat = F.view(-1) or F_flat = F.reshape(50)